package com.clownfish7.jvm.bytecode;

/**
 * @author yzy
 * @classname Test7
 * @description TODO
 * @create 2019-08-02 14:56
 */

import java.util.Date;

/**
 * 针对于方法调用动态分派的过程，虚拟机会在类的方法区创建一个虚方法表的数据结构(virtual method table, vtable),
 * 针对于 invokeinterface 指令来说，虚拟机会建立一个叫做接口方法表的数据结构(interface method table, itable)
 */
public class Test7 {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Animal dog = new Dog();

        animal.test("hello");
        dog.test(new Date());
    }
}

class Animal {
    public void test(String str) {
        System.out.println("animal str");
    }

    public void test(Date date) {
        System.out.println("animal date");
    }
}

class Dog extends Animal {
    @Override
    public void test(Date date) {
        System.out.println("dog date");
    }

    @Override
    public void test(String str) {
        System.out.println("dog str");
    }
}
